/*
   Intel Copyright (C) ....
*/

#include "sparse_solver.h"
#include <Eigen/PardisoSupport>

template<typename T>
void
test_pardiso_T()
{
	PardisoLLT<SparseMatrix<T, RowMajor>, Lower> pardiso_llt_lower;
	PardisoLLT<SparseMatrix<T, RowMajor>, Upper> pardiso_llt_upper;
	PardisoLDLT<SparseMatrix<T, RowMajor>, Lower> pardiso_ldlt_lower;
	PardisoLDLT<SparseMatrix<T, RowMajor>, Upper> pardiso_ldlt_upper;
	PardisoLU<SparseMatrix<T, RowMajor>> pardiso_lu;

	check_sparse_spd_solving(pardiso_llt_lower);
	check_sparse_spd_solving(pardiso_llt_upper);
	check_sparse_spd_solving(pardiso_ldlt_lower);
	check_sparse_spd_solving(pardiso_ldlt_upper);
	check_sparse_square_solving(pardiso_lu);
}

EIGEN_DECLARE_TEST(pardiso_support)
{
	CALL_SUBTEST_1(test_pardiso_T<float>());
	CALL_SUBTEST_2(test_pardiso_T<double>());
	CALL_SUBTEST_3(test_pardiso_T<std::complex<float>>());
	CALL_SUBTEST_4(test_pardiso_T<std::complex<double>>());
}
